BibliotecaAuxiliarScript.execute('framework.src.gui.Component');
BibliotecaAuxiliarScript.execute('framework.src.util.gui.Fonte');
BibliotecaAuxiliarScript.execute('framework.src.util.lua.BibliotecaAuxiliarTexto');

Text = Component.new();

Text.id = 'Text';
Text.st_texto = "";
Text.fonte = nil;
Text.nb_distancia_entre_linhas = 2;
Text.is_texto_alterado = false;
Text.is_fonte_alterada = false;

function Text.__index(tabela,chave)
	return Text[chave];
end

function Text.new(o)
	local retorno = o or {};
	retorno = setmetatable(retorno,Text);
	
	if(retorno.fonte == nil)then
		retorno.fonte = Fonte.new({nome='Arial', tamanho=16});
		retorno.fonte.cor = Cor.new({r=0,g=0,b=255});
	end
	
	return retorno;
end

function Text:draw()
	
	if(self.is_texto_alterado or self.is_fonte_alterada) then
		self:atualizar();
	end
	
	local fundo = BibliotecaAuxiliarDesenho.newImagem(self.nb_largura,self.nb_altura);
	BibliotecaAuxiliarDesenho.limparTela(fundo,self.cor_fundo);
	
	if(self.st_texto ~= nil)then
		local px_inicial = self.nb_px_texto;
		local py_inicial = self.nb_py_texto;
	
		for i = 1, #self.tb_texto_quebrado do
			BibliotecaAuxiliarDesenho.desenharTexto(self.fonte,px_inicial,py_inicial,tostring(self.tb_texto_quebrado[i]),fundo);
			py_inicial = py_inicial + self.nb_altura_linha;
		end
		
	end
	return fundo;
end

function Text:handler()
end

function Text:setTexto(newTexto)
	self.st_texto = newTexto;
	self.is_texto_alterado = true;
end

function Text:setFonte(newFonte)
	self.fonte = newFonte;
	self.is_fonte_alterada = true;
end

function Text:atualizar()
	self.tb_texto_quebrado = BibliotecaAuxiliarTexto.quebrarTexto(self.fonte,self.st_texto,self.nb_largura - self.nb_margem_esquerda - self.nb_margem_direita);
	
	self.nb_altura_linha = BibliotecaAuxiliarDesenho.getAlturaTexto(self.fonte,self.tb_texto_quebrado[2]) + self.nb_distancia_entre_linhas; 
	
	self.nb_altura_texto = (#self.tb_texto_quebrado)*self.nb_altura_linha;
	self.nb_altura = self.nb_altura_texto + self.nb_margem_superior + self.nb_margem_inferior;
	
		
	self.nb_px_texto = self.nb_margem_esquerda;
	self.nb_py_texto = self.nb_altura_linha;
	
	self.is_texto_alterado = false;
	self.is_fonte_alterada = false;
end
